# Python字符串清理：探秘rstrip的神奇功效

# [钛妹]: 基础不牢谈何AI？今天钛妹又学习了Python的rstrip方法，欢迎大神们指正错误！
# [钛哥]: 哈哈，轻松点，不用这么客气！咱们先看看rstrip的基本用法吧。

txt_default = "     banana     "
# [钛妹]: 这行字符串开头和结尾都带了空格，我想只去掉末尾的空格。
# [钛哥]: 没错，rstrip()默认会去掉字符串结尾处的空白字符。演示一下：
res_default = txt_default.rstrip()
print("示例1 - 去除末尾空格后:", repr(res_default))

# [钛妹]: 好耶！前面的空格还在，只是后面空格没了。那如果要从前面去掉空格应该用什么？
# [钛哥]: 去除前面的空格用lstrip()，前后都去掉用strip()，今天的主角只是负责“右边”而已。

txt_custom = "banana,,,,,ssqqqww....."
# [钛妹]: 这行字符串尾巴可真热闹，逗号、句点，还有字母s、q、w混在一起。
# [钛哥]: rstrip可以指定要去除哪些字符的集合，比如",.qsw"都要去掉。来试试：
res_custom = txt_custom.rstrip(",.qsw")
print("示例2 - 按指定字符去除末尾:", repr(res_custom))

# [钛妹]: 哇，末尾的逗号和句点，还有s、q、w都被干掉了。不过如果末尾还有别的字符怎么办？
# [钛哥]: 只要在参数里写上它，rstrip都会帮你剔除掉。它会一直去除，直到遇到不在列表内的字符为止。

txt_none = "applebanana"
# [钛妹]: 若末尾没有空格或指定的特殊字符，那就啥也不做，对吧？
# [钛哥]: 没错，rstrip不会改变原字符串。演示一下：
res_none = txt_none.rstrip()
print("示例3 - 字符串末尾无空格和特殊字符:", repr(res_none))

# [钛妹]: 那我来加点空格和标点，看看能不能都去掉。
txt_combo = "applebanana...   "
# [钛哥]: 行啊，我们指定的字符是"."和空格。只要这些字符反复出现，rstrip就会一直清理到不是它们为止。
res_combo = txt_combo.rstrip(". ")
print("示例4 - 混合去除末尾'.'和空格:", repr(res_combo))

# [钛妹]: 这样可以做很多文本清理，尤其是在处理用户输入时！
# [钛哥]: 是啊，rstrip用来处理日志、文件行尾的多余空格或符号也很常见。

msg_lines = [
    "Hello, world!    ",
    "This is a test...",
    "No trailing chars here",
    "Python is fun!!!        "
]

# [钛妹]: 我们看看批量处理的场景吧。如果读到很多行想去掉行尾空格或叹号、句点啥的？
# [钛哥]: 可以写个循环，通过rstrip灵活指定要删的内容，比如".! "一起去掉，演示如下：
cleaned_lines = []
for line in msg_lines:
    cleaned_line = line.rstrip(".! ")
    cleaned_lines.append(cleaned_line)

print("示例5 - 批量清理行尾符号与空格:")
for i, line in enumerate(cleaned_lines, 1):
    print(f"第{i}行处理后: {repr(line)}")

# [钛妹]: 太好了，看得出rstrip真是个细节小帮手！咱们再总结一下吧？
# [钛哥]: 没问题，总结如下：
#         1. rstrip()默认为去除末尾空白字符；
#         2. 可在参数中指定多个要去除的字符组成的字符串；
#         3. 会一直去除指定字符，直到遇到不在列表内的为止；
#         4. 若末尾没有可去除的字符，就原样返回。

print("好啦，这期内容到此结束，你是不是感觉又进步了一点点？点赞关注不迷路！")